#ifndef __FILE_HANDLER_H__
#define __FILE_HANDLER_H__

#include <string>
#include <unistd.h>
#include "Defines.h"
#include <sys/stat.h>

// 该类专门负责获取文件信息（文件处理器）
class FileHandler {
private:
    std::string _filePath;      // 文件路径
    FILE *_file;                // 文件指针
    long _currentFilePosition;  // 记录文件指针当前位置（避免移动文件指针后，导致读取的内容不合预期）

private:
    // 判断文件是否是目录文件
    bool _isDirectoryFile();
    // 判断文件是否是普通文件（非套接字、软链接等文件）
    bool _isOrdinaryFile();

public:
    /*构造函数：
    1、判断文件是否存在
    2、存在，则打开文件（默认以只读模式打开）
    */
    FileHandler(std::string filePath, std::string fileOpenMode = "r");
    // 判断文件是否存在（通过access方法）
    bool _isFileExist();
    // 获取文件大小
    long _getFileSize();
    // 读取文件
    size_t _readFile(char *buff, int length);
};

#endif // !__FILE_HANDLER_H__